"""
应用工厂模式初始化文件
"""
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_jwt_extended import JWTManager
from flask_cors import CORS
from config import config

# 初始化扩展
db = SQLAlchemy()
jwt = JWTManager()

def create_app(config_name='default'):
    """
    应用工厂函数
    
    Args:
        config_name: 配置名称，默认为'default'
        
    Returns:
        Flask应用实例
    """
    app = Flask(__name__)
    
    # 加载配置
    app.config.from_object(config[config_name])
    
    # 设置JSON编码
    app.json.ensure_ascii = False
    
    # 初始化扩展
    db.init_app(app)
    jwt.init_app(app)
    
    # 配置CORS，允许所有源访问
    CORS(app, supports_credentials=True)
    
    # 创建上传文件夹
    import os
    os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
    
    # 注册蓝图
    from .api import register_blueprints
    register_blueprints(app)
    
    return app 